<?php

namespace Home\Controller;
use Think\Controller;
/**
 * Class LoginController
 * @package Home\Controller
 */
class LoginController extends Controller {
    /**
     * 用户登录
     */

    private function check_login($login)
    {
        if (!$data = $login->create()) {
            // 防止输出中文乱码
            header("Content-type: text/html; charset=utf-8");
            $rs['code'] = -1;
            $rs['msg'] = $login->getError();
            session('isVerify', 1);
            //需要验证码
            $rs['verify'] = 1;
            session('verify', 1);
            $this->ajaxReturn($rs);
            //exit($login->getError());
        }
        // 组合查询条件
        $where = array();
        $where['email'] = $data['email'];
        $result = $login->where($where)->field('uid,username,password,lastdate,lastip')->find();
        // 验证用户名 对比 密码
        if ($result && $result['password'] == $data['password']) {
            // 存储session
            session('uid', $result['uid']);          // 当前用户id
            session('username', $result['username']);   // 当前用户昵称
            session('email', $result['email']);   // 当前用户邮箱
            session('lastdate', $result['lastdate']);   // 上一次登录时间
            session('lastip', $result['lastip']);       // 上一次登录ip
            // 更新用户登录信息
            $where['userid'] = session('uid');
            D('Common/users')->where($where)->setInc('loginnum');   // 登录次数加 1
            D('Common/users')->where($where)->save($data);   // 更新登录时间和登录ip
            $rs['code'] = 1;
            $rs['msg'] = '登录成功,正跳转至系统首页';
            session('verify', 0);
            $this->ajaxReturn($rs);
        } else {
            $rs['code'] = -1;
            $rs['msg'] = '用户名或密码不正确';
            session(null);//清空所有session
            //需要验证码
            $rs['verify'] = 1;
            session('verify', 1);
            $this->ajaxReturn($rs);
        }
    }


    public function index()
    {
        // 判断提交方式
        if (IS_POST) {
            // 实例化Login对象
            $login = D('Common/Login');
            // 自动验证 创建数据集

            //需要验证码时进行验证
            if (session('verify') == 1){
                $verify_code = I('verify');
                if (!$verify_code){
                    $rs['code'] = -1;
                    $rs['msg'] = '验证码不能为空！';
                    $this->ajaxReturn($rs);
                }
                else{
                    if ($this->check_verify($verify_code, 1) == false){
                        $rs['code'] = -1;
                        $rs['msg'] = '验证码错误！';
                        $this->ajaxReturn($rs);
                    }
                    else{
                        //进行登录验证
                        $this->check_login($login);
                    }
                }
            }
            else{
                //进行登录验证
                $this->check_login($login);
            }

        } else {
            if(session('verify') == 0)
                $this->assign('verify', 0);
            else
                $this->assign('verify', 1);
            $this->display();
        }
    }
    /**
     * 用户注册
     */
    public function register()
    {
        // 判断提交方式 做不同处理
        if (IS_POST) {
            // 实例化User对象
            $user = D('users');
            // 自动验证 创建数据集
            if (!$data = $user->create()) {
                // 防止输出中文乱码
                header("Content-type: text/html; charset=utf-8");
                $rs['code'] = -1;
                $rs['msg'] = $user->getError();
                session(null);//失败清除验证码
                $this->ajaxReturn($rs);

            }
            //插入数据库
            if ($id = $user->add($data)) {
                //写入session
                $result = $user->find($id);
                session('uid', $result['uid']);          // 当前用户id
                session('username', $result['username']);   // 当前用户昵称
                session('email', $result['email']);   // 当前用户邮箱
                session('lastdate', $result['lastdate']);   // 上一次登录时间
                session('lastip', $result['lastip']);       // 上一次登录ip
                $rs['code'] = 1;
                $rs['msg'] = '注册成功！';
                $this->ajaxReturn($rs);
            } else {
                $rs['code'] = -1;
                $rs['msg'] = '注册失败！查看日志';
                $this->ajaxReturn($rs);
            }
        } else {


            $this->display();
        }
    }
    /**
     * 用户注销
     */
    public function logout()
    {
        // 清楚所有session
        session(null);
        header("Content-type: text/html; charset=utf-8");
        redirect(U('/Home/Login/'), 1, '正在退出登录...');
    }

    public function adminLogin()
    {
        if (IS_AJAX){

            $username = I('username');
            $passwd = I('passwd');
            $code = I('verify');

            $passwd = md5($passwd);

            $admin = M('admins');

            // 组合查询条件
            $where = array();
            $where['username'] = $username;
            $result = $admin->where($where)->find();
            // 验证用户名 对比 密码


            $verify = new \Think\Verify();
            if ($verify->check($code, 1) == true){
                if ($result && $result['password'] == $passwd) {
                    // 存储session
                    session('admin_id', $result['admin_id']);          // 当前用户id
                    session('username', $result['username']);   // 当前用户昵称
                    session('admin', 1);
                    session('uid', null);
                    // 更新用户登录信息

                    $rs['code'] = 1;
                    $rs['msg'] = '登录成功,正跳转至系统首页';
                    session('verify', 0);
                    $this->ajaxReturn($rs);
                } else {
                    $rs['code'] = -1;
                    $rs['msg'] = '用户名或密码不正确';
                    session(null);//清空所有session
                    //需要验证码
                    $rs['verify'] = 1;
                    session('verify', 1);
                    $this->ajaxReturn($rs);
                }

            }
            else{
                $rs['code'] = -1;
                $rs['msg'] = '验证码错误！';
                session(null);//清空所有session
                //需要验证码
                $rs['verify'] = 1;
                session('verify', 1);
                $this->ajaxReturn($rs);
            }

        }
        else{
            $this->display();
        }
    }


    /**
     * 验证码
     */
    public function verify()
    {
        // 实例化Verify对象
        $verify = new \Think\Verify();
        // 配置验证码参数
        $verify->fontSize = 14;     // 验证码字体大小
        $verify->length = 4;        // 验证码位数
        $verify->imageH = 34;       // 验证码高度
        $verify->useImgBg = true;   // 开启验证码背景
        $verify->useNoise = false;  // 关闭验证码干扰杂点
        $verify->entry(1);
    }

    /**
     * 检查验证码
     */

    protected function check_verify($code, $id = 1){
        $verify = new \Think\Verify();
        if ($verify->check($code, $id) == true){
            return true;
        }
        else{
            return false;
        }
    }


}